import java.util.Scanner;
/*
范围上尝试的模型
给定一个整型数组arr，代表数值不同的纸牌排成一条线玩家A和玩家B依次拿走每张纸牌规定玩家A先拿，
玩家B后拿但是每个玩家每次只能拿走最左或最右的纸牌玩家A和玩家B都绝顶聪明。请返回最后获胜者的分数
 */

public class Demo8 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        int[] arr=new int[n];
        for(int i=0;i<arr.length;i++)
        {
            arr[i]=sc.nextInt();
        }
        int ret=Math.max(f(arr,0,arr.length-1),s(arr,0,arr.length-1));
        System.out.println(ret);
    }



    private static int f(int[] arr, int L, int R) {
        if(L==R)
        {
            return arr[L];
        }
        return Math.max(arr[L]+s(arr,L+1,R),arr[R]+s(arr,L,R-1) );
    }

    private static int s(int[] arr, int L, int R) {
        if(L==R)
        {
            return 0;
        }
        return Math.min(f(arr,L+1,R),f(arr,L,R-1) );
    }
}
